// 题目描述
// 讨论 (1.4K)
// 232. 用两个栈实现队列
// 简单
// 766
// 用两个栈实现一个队列。队列的声明如下，请实现它的两个函数 appendTail 和 deleteHead ，分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素，deleteHead 操作返回 -1 )
//   示例 1：
// 输入：
// ["CQueue","appendTail","deleteHead","deleteHead","deleteHead"]
// [[],[3],[],[],[]]
// 输出：[null,null,3,-1,-1]
// 示例 2：
// 输入：
// ["CQueue","deleteHead","appendTail","appendTail","deleteHead","deleteHead"]
// [[],[],[5],[2],[],[]]
// 输出：[null,-1,null,null,5,2]
// 提示：
// 1 <= values <= 10000
// 最多会对 appendTail、deleteHead 进行 10000 次调用
// 通过次数
// 579.6K
// 提交次数
// 824.1K
// 通过率
// 70.3%
// 《剑指 Offer（第 2 版）》官方授权
// https://leetcode.cn/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/

var MyQueue = function () {
  this.s1 = []
  this.s2 = []
}

/**
 * @param {number} x
 * @return {void}
 */
MyQueue.prototype.push = function (x) {
  this.s1.push(x)
}

/**
 * @return {number}
 */
MyQueue.prototype.pop = function () {
  // 先调用 peek 保证 s2 非空
  this.peek()
  return this.s2.pop()
}

/**
 * @return {number}
 */
MyQueue.prototype.peek = function () {
  if (this.s2.length === 0) {
    while (this.s1.length) {
      this.s2.push(this.s1.pop())
    }
  }

  return this.s2[this.s2.length - 1]
}

/**
 * @return {boolean}
 */
MyQueue.prototype.empty = function () {
  return this.s1.length === 0 && this.s2.length === 0
}

/**
 * Your MyQueue object will be instantiated and called as such:
 * var obj = new MyQueue()
 * obj.push(x)
 * var param_2 = obj.pop()
 * var param_3 = obj.peek()
 * var param_4 = obj.empty()
 */
